The advancing sophistication of software, such as computer games and Web search software, is placing great burden on the hardware. To cope with this situation, it is of course necessary to increase the speed of computation itself, but it is also important to introduce multiple processors and carry out multiple task processing efficiently. In doing so, an important key to higher-speed processing is how individual processors are operated at higher operating rate.
To have a plurality of processors execute task processing in parallel with each other, an OS (operating system) normally takes charge of such processes as division of processing into tasks, assignment of the tasks to the respective processors, switching of processing, and control of access from each processor to main memory or I/O units. On the other hand, there have been propositions of techniques for user-level scheduling in which a user-level task operating on the OS carries out scheduling and such other control of task processing. For example, there is a technology proposed for storing tasks in a queue of main memory and having a task executing processor itself select a task from the queue and execute it (See Patent Document 1, for instance).
Details of certain know systems and devices may be found in JP 2007-52511.
As described above, it is now a wide-spread art that the processing speed of a program is ensured by having a plurality of processors execute task processing in parallel with each other. At the same time, since there are ever-increasing needs of users for sophisticated processing at higher speeds, there exists much demand for technologies that can realize more efficient processing by maximizing the use of a limited number of resources.